/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hoja.de.trabajo5;

/**
 *
 * @author FAMILIA
 */
public class ColaCircular<E> extends AbstracQueue<E> {
    
    /**
     * Se declara la lista circular.
     */
    public ListaCircular<E> datos;
	
    /**
     * Constructor	
     * Permite crear una nueva cola utilizando un lista circular.
     */

    public ColaCircular(){
        datos  = new ListaCircular<E>();
    }

    /**
     * 
     * @param e Puede ser cualquier tipo de dato.
     * @return True, si se pudo agregar el dato.
     * @throws Exception Si no se pudo agregar el dato.
     */
    @Override
    public boolean add(E e) throws Exception {
        try{
            datos.addLast(e);
	}
        catch(Exception a){
        }
        return true;
    }

    /**
     * Deja ver el elemento de la lista, pero no lo elimina.
     * @return El primer elemento de la cola.
     */
    @Override
    public E peek() {
        if(!datos.isEmpty()){
            return datos.peek();
	}
        else{
            return null;
	}
    }

    /**
     * Devuelve y elimina el primer elemento de la cola.
     * @return El primer elemento de la cola.
     */
    @Override
    public E remove() {
        if(!datos.isEmpty()){
            return datos.removeFirst();
	}
        else{
            return null;
	}
    }

    /**
     * Verifica el tamaño de la cola.
     * @return El número de elementos en la cola.
     */
    @Override
    public int size() {
        return datos.size();
    }
    
}

